import       Fits ( serializeImage, writeFits )
import Sim.Types  ( Context(..), Env(..), Device(..) )
import Sim.Loader ( getContext )
import Sim.Engine (
    mergeImage,

    runProcess,
    initImage,

    darkNoiseModeling,
    cosmicTracesModeling,
    obsObjectsModeling,
    bloomingModeling,
    adcModeling
  )

-- Запуск основного цикла процесса моделирования

main = do
--  getLine >>= getContext >>= runProcess process >>= writeToFile

  getContext "sim.cfg" >>= runProcess process >>= writeToFile

-- Процесс моделирования

process = do
  initImage
     >>= darkNoiseModeling
     >>= cosmicTracesModeling
     >>= obsObjectsModeling
     >>= bloomingModeling
     >>= adcModeling

-- Запись симулированного изображения в файл формата FITS

writeToFile (hd,fn,is) = do

    putStrLn "Creating FITS file..."

    mergeImage is >>= serializeImage hd >>= writeFits fn

    putStrLn "FITS file is created."